#pragma once

#include <set>
#include <string>

namespace ks3::sdk {

enum MethodType {
    GET_METHOD = 0,
    PUT_METHOD,
    DELETE_METHOD,
    POST_METHOD,
    HEAD_METHOD,
    NOT_SET
};

inline std::string MethodToStr(const MethodType method) {
    std::string result;
	switch(method) {
	case PUT_METHOD:
        result = "PUT";
		break;
	case GET_METHOD:
        result = "GET";
		break;
    case POST_METHOD:
        result = "POST";
		break;
	case DELETE_METHOD:
        result = "DELETE";
        break;
	case HEAD_METHOD:
        result = "HEAD";
        break;
    default:
        break;
    }
    return result;
}

static const std::set<std::string> ParamtersToSign = {
	"acl", "lifecycle", "location", "logging", "notification", "partNumber",
	"policy", "requestPayment", "torrent", "uploadId", "uploads", "versionId",
	"versioning", "versions", "website", "crr",
	"response-content-type", "response-content-language",
	"response-expires", "response-cache-control",
	"response-content-disposition", "response-content-encoding"
};

}